The present invention relates to an electronic device, such as a modem, having an interface operable with a complete protocol stack code in normal operation, and comprising a non-volatile memory, such as a flash memory containing a code for booting said device.
At present there exist several mechanisms through which software upgrades, bug fixes for electronic devices and the like are distributed to the user. A first possibility is that a technician travels to the site where the device needs an upgrade, and replaces the memory section which needs updating.
More efficient software upgrades during full operational mode are also already known, and can for example be done over the Universal Serial Bus (USB). According to one known method, the software upgrade is done on fully operational software, wherein the new software is first downloaded to the SDRAM and subsequently downloaded to the flash memory. However, this involves the risk that if any failure occurs during the download to the Flash memory the device will become inoperable.
Further it is already known to download files during the boot operation via the Ethernet interface. According to this solution the flash memory contains a boot code which typically resides in the top part of the flash memory, and is programmed there by a flash programming tool. This boot code is started when the device board is powered on, and is used to download a file via the Ethernet interface. For this purpose the boot code includes the Bootstrap protocol (BOOTP) for sending BOOTP requests over the Ethernet port, and the trivial file transfer protocol (TFTP) for downloading the file over the Ethernet port. Such a device can be provided with a USB, wherein a USB protocol stack code is typically available in the operational software, but not in the boot code because the size of this USB code is too large to be put in a flash memory with a typical size of for example 4 Mb. Hence upgrading software over USB during the booting operation is impossible.